Micron Document
🎖️GitЯра🎖️

Node / meshtastic / Meshtastic-Android / files / .coderabbit / ast-grep-rules / no-float-metric-zero-sentinel.yml

Displaying Raw • Download

.coderabbit/ast-grep-rules/no-float-metric-zero-sentinel.yml bfb66eb988f8259e66ab4adb03dbffb900280d3f (bfb66eb9) Text, 1.36 KB

T8b949e# Recurring defect class A — see "Presence vs sentinel zero" in .skills/code-review/SKILL.md.
T8b949e#
T8b949e# The protobuf models are Wire-generated, so presence IS nullability: EnvironmentMetrics.temperature and friends are
T8b949e# declared `Float? = null` and there is no hasX() accessor. A `(x ?: 0f) != 0f` guard collapses "absent" and
T8b949e# "measured zero" into one state and silently discards a real reading. Use `x?.let { ... }` instead — see
T8b949e# `gatherSensors` in core/ui/.../NodeItem.kt for the reference pattern.
T8b949e#
T8b949e# Humidity is the deliberate exception: 0 %RH is not physically reachable, so relative_humidity / co2_humidity keep
T8b949e# their zero-guards and are not listed here. Same for barometric_pressure (0 hPa is a vacuum).
Tff7b72idTb4b4b4: Ta5d6ffno-float-metric-zero-sentinel
Tff7b72languageTb4b4b4: Ta5d6ffkotlin
Tff7b72severityTb4b4b4: Ta5d6fferror
Tff7b72messageTb4b4b4: Ta5d6ff"Ta5d6ff0Te6edf3 Ta5d6ffisTe6edf3 Ta5d6ffaTe6edf3 Ta5d6ffrealTe6edf3 Ta5d6ffreadingTe6edf3 Ta5d6ffonTe6edf3 Ta5d6ffthisTe6edf3 Ta5d6ffscaleTe6edf3 Ta5d6ff—Te6edf3 Ta5d6ffuseTe6edf3 Ta5d6ff`?.letTe6edf3 Ta5d6ff{Te6edf3 Ta5d6ff}`Te6edf3 Ta5d6ffinsteadTe6edf3 Ta5d6ffofTe6edf3 Ta5d6ffaTe6edf3 Ta5d6ffzero-guard.Ta5d6ff"
T8b949e# Every spelling of the zero-float literal is listed: a reformat from `0f` to `0.0f` must not slip past the rule.
Tff7b72ruleTb4b4b4:
Tff7b72anyTb4b4b4:
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0f)Te6edf3 Ta5d6ff!=Te6edf3 Ta5d6ff0fTa5d6ff"
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0f)Te6edf3 Ta5d6ff==Te6edf3 Ta5d6ff0fTa5d6ff"
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0F)Te6edf3 Ta5d6ff!=Te6edf3 Ta5d6ff0FTa5d6ff"
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0F)Te6edf3 Ta5d6ff==Te6edf3 Ta5d6ff0FTa5d6ff"
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0.0f)Te6edf3 Ta5d6ff!=Te6edf3 Ta5d6ff0.0fTa5d6ff"
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0.0f)Te6edf3 Ta5d6ff==Te6edf3 Ta5d6ff0.0fTa5d6ff"
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0.0F)Te6edf3 Ta5d6ff!=Te6edf3 Ta5d6ff0.0FTa5d6ff"
Tb4b4b4- Tff7b72patternTb4b4b4: Ta5d6ff"Ta5d6ff($XTe6edf3 Ta5d6ff?:Te6edf3 Ta5d6ff0.0F)Te6edf3 Ta5d6ff==Te6edf3 Ta5d6ff0.0FTa5d6ff"
Tff7b72constraintsTb4b4b4:
Tff7b72XTb4b4b4:
Tff7b72regexTb4b4b4: Ta5d6ff"Ta5d6ff(temperature|voltage|current|soil_moisture)$Ta5d6ff"

Served by rngit 1.5.2 - Generated in 0.06s